package br.com.sovi.resources.cerca;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

import br.com.sovi.persistence.Cerca;
import br.com.sovi.persistence.Dispositivo;
import br.com.sovi.persistence.Ponto;
import br.com.sovi.resources.ponto.PontoVO;

@XmlRootElement(name = "cerca")
@XmlAccessorType(XmlAccessType.FIELD)
public class CercaVO {

	private String dispositivo;

	private List<PontoVO> pontos;

	public CercaVO() {
	}

	public CercaVO(String dispositivo, List<PontoVO> pontos) {
		super();
		this.dispositivo = dispositivo;
		this.pontos = pontos;
	}

	public CercaVO(Cerca cerca) {
		Dispositivo d = cerca.getDispositivo();
		this.dispositivo = d.getSerial();
		List<Ponto> pontoBeans = cerca.getPontos();

		pontos = new ArrayList<PontoVO>(pontoBeans.size());

		for (Ponto ponto : pontoBeans) {
			pontos.add(new PontoVO(ponto));
		}
	}

	public Cerca toBean(Dispositivo dispositivo) {
		Cerca cerca = dispositivo.getCerca();

		if (cerca == null) {
			cerca = new Cerca();
			cerca.setId(dispositivo.getId());
		}
		else {
			cerca.setDispositivo(dispositivo);
			cerca.getPontos().clear();
		}

		for (PontoVO vo : pontos) {
			cerca.addPonto(vo.toBean());
		}

		return cerca;
	}

	public String getDispositivo() {
		return dispositivo;
	}

	public void setDispositivo(String dispositivo) {
		this.dispositivo = dispositivo;
	}

	public List<PontoVO> getPontos() {
		return pontos;
	}

	public void setPontos(List<PontoVO> pontos) {
		this.pontos = pontos;
	}

}
